package com.keepsport.keepsportapi.utils;

import redis.clients.jedis.GeoCoordinate;
import redis.clients.jedis.GeoRadiusResponse;
import redis.clients.jedis.GeoUnit;
import redis.clients.jedis.Jedis;

import java.util.List;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @Description:
 * @Author: 邢朋辉
 * @Date: 2022/6/23 15:55
 */
public class JedisUtil {
    private static Jedis jedis;
    static {
        jedis=new Jedis("8.142.160.101",6380);
        jedis.auth("123456");
    }
    //新增
    public static void addString(String key,String val){
        jedis.set(key,val);
    }
    public static void addString(String key,String val,long seconds){
        jedis.setex(key,seconds,val);
    }
    public static void addSet(String key,String val){
        jedis.sadd(key,val);
    }
    public static void addHash(String key,String field,String flag){
        jedis.hset(key,field,flag);
    }

    //GEO 类型
    public static void addGeo(String key,String address,double lat,double lng){
        jedis.geoadd(key,lng,lat,address);
    }


    //校验
    public static boolean checkKey(String... key){
        return jedis.exists(key)>0;
    }
    public static boolean checkSet(String key,String val){
        return jedis.sismember(key,val);
    }
    public static boolean checkHash(String key,String field){
        return jedis.hexists(key, field);
    }
    //获取
    public static String getString(String key){
        return jedis.get(key);
    }
    public static String getHash(String key,String field){
        return jedis.hget(key, field);
    }
    public static List<GeoCoordinate> getGeo(String key, String member){
        return jedis.geopos(key,member);
    }
    public static double getDist(String key,String m1,String m2){
        return jedis.geodist(key,m1,m2);
    }
    //半径搜索
    public static List<GeoRadiusResponse> getGeoRadius(String key, double lat, double lng, double radius){
        return jedis.georadius(key,lng,lat,radius, GeoUnit.M);
    }

    //删除
    public static void delKeys(String... keys){
        jedis.del(keys);
    }
    //设置有效期
    public static void expire(String key,long seconds){
        jedis.expire(key, seconds);
    }

}
